<?php
namespace Amis\dataviewer;

use Amis\Basics\AmisBasics;

class Video extends AmisBasics
{
    public string $type = 'video';

    public function className(string $className)
    {
        $this->className = $className;
        return $this;
    }

    /**
     * 视频地址
     * @param string $src
     * @return $this
     */
    public function src(string $src)
    {
        $this->src = $src;
        return $this;
    }

    /**
     * 是否为直播，视频为直播时需要添加上，支持flv和hls格式
     * @param bool $isLive
     * @return $this
     */
    public function isLive(bool $isLive = false)
    {
        $this->isLive = $isLive;
        return $this;
    }

    /**
     * 指定直播视频格式
     * @param string $videoType
     * @return $this
     */
    public function videoType(string $videoType)
    {
        $this->videoType = $videoType;
        return $this;
    }

    /**
     * 视频封面地址
     * @param string $poster
     * @return $this
     */
    public function poster(string $poster)
    {
        $this->poster = $poster;
        return $this;
    }

    /**
     * 是否静音
     * @param bool $muted
     * @return $this
     */
    public function muted(bool $muted)
    {
        $this->muted = $muted;
        return $this;
    }

    /**
     * 是否自动播放
     * @param bool $autoPlay
     * @return $this
     */
    public function autoPlay(bool $autoPlay)
    {
        $this->autoPlay = $autoPlay;
        return $this;
    }

    /**
     * 倍数，格式为[1.0, 1.5, 2.0]
     * @param array|float[] $rates
     * @return $this
     */
    public function rates(array $rates = [1.0, 1.5, 2.0])
    {
        $this->rates = $rates;
        return $this;
    }

    /**
     * key 是时刻信息，value 可以可以为空，可有设置为图片地址，请看上方示例
     * @param array $frames
     * @return $this
     */
    public function frames(array $frames)
    {
        $this->frames = $frames;
        return $this;
    }

    /**
     * 点击帧的时候默认是跳转到对应的时刻，如果想提前 3 秒钟，可以设置这个值为 3
     * @param int $jumpBufferDuration
     * @return $this
     */
    public function jumpBufferDuration(int $jumpBufferDuration)
    {
        $this->jumpBufferDuration = $jumpBufferDuration;
        return $this;
    }

    /**
     * 到了下一帧默认是接着播放，配置这个会自动停止
     * @param bool $stopOnNextFrame
     * @return $this
     */
    public function stopOnNextFrame(bool $stopOnNextFrame)
    {
        $this->stopOnNextFrame = $stopOnNextFrame;
        return $this;
    }
}